{{tag>Application Système Nix }}
----

====== Nix, le gestionnaire de paquets ======

**Nix** est un gestionnaire de paquets fonctionnel, il n'est pas liés à une distribution particulière, il est mutli-plateforme.

Quel intérêt ?
  - C'est un moyen efficace d’installer des paquets qui ne sont pas disponibles via le gestionnaire de paquets de sa distribution ;
  - On peut tester l’installation de programmes ou bibliothèques sans polluer son système ; **Nix** conserve même l’historique des installations et permet de revenir aux états antérieurs ;
  - **Nix** gère les paquets efficacement en calculant une somme de contrôle du paquet ; ainsi, quand deux utilisateurs installent une même version d’un paquet, c’est le même dossier d’installation qui est utilisé, ce partage est sans risque car le dossier est en lecture seule et ne sera jamais supprimé tant qu’un utilisateur y fait référence ;
  - Ce n’est pas un système de conteneurs ni de machines virtuelles, les logiciels installés par **Nix** sont exécutés directement par le système.

Il stocke tous les paquets isolés les uns des autres dans un magasin de paquets. Cela permet que les nouvelles configurations n'écrasent pas les anciennes et que plusieurs versions d'un paquet puissent coexister. 

===== Installation de Nix =====


<code bash>
curl https://nixos.org/nix/install | sh
echo ". $HOME/.nix-profile/etc/profile.d/nix.sh" >> ~/.bashrc
source ~/.bashrc
</code>


===== Installer et utiliser un paquet =====

ajouter un canal de paquets :

<code bash>
nix-channel --add https://nixos.org/channels/nixos-19.09 nixpkgs
nix-channel --update
</code>

chercher et exécuter un logiciel :

<code bash>
nix search geany
...
nix run nixpkgs.geany -c geany
</code>

===== Avoir accès aux raccourcis Nix =====

<code>
echo 'export XDG_DATA_DIRS=$HOME/.nix-profile/share:$HOME/.share:$XDG_DATA_DIRS' >> /etc/profile.d/nix.sh
</code>

====== Store complet ======

Voir https://nixos.org/nixos/packages.html

Pour rechercher un paquet en ligne de commande

<code bash>
nix search gcompris
</code>

===== Voir aussi =====

  * **(en)** [[https://nixos.wiki/wiki/Nix_Installation_Guide]] 
  * **(en)** [[wp>Nix package manager|Nix (gestionnaire de paquets)]] 
  * * **(fr)** [[https://nokomprendo.gitlab.io/posts/tuto_fonctionnel_43/2019-12-23-fr-README.html]]
